home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 2
/
Amiga Tools 2.iso
/
tex
/
macros
/
source
/
contrib
/
ucthesis
/
ucthesis.cls
< prev
next >
Wrap
Text File
|
1995-03-09
|
45KB
|
1,277 lines
% UCTHESIS DOCUMENT CLASS -- Release info is below.
% for LaTeX version 2e - 11/3/94
%%% ====================================================================
%%% @LaTeX-class-file{
%%% filename = "ucthesis.cls",
%%% version = "3.0",
%%% date = "31 October 1994",
%%% portedby = "Blaise B. Frederick",
%%% address = "Center for Functional Imaging
%%% Lawrence Berkeley Laboratory
%%% MS 55-121
%%% 1 Cyclotron Rd.
%%% Berkeley, CA 94720
%%% USA",
%%% telephone = "(510) 486-4423",
%%% email = "frederic@imasun.lbl.gov",
%%% codetable = "ISO/ASCII",
%%% keywords = "LaTeX, ucthesis",
%%% supported = "until November 30, 1994",
%%% docstring = "This file is the main file for the ucthesis
%%% class, which is intended to meet the requirements
%%% for University of California Ph.D. dissertations.
%%% It is a direct port to LaTeX2e from UCTHESIS
%%% v2.7 by Ethan V. Munson, with no changes other
%%% than those for compatibility. The major modifictions
%%% are in the font selection commands in the option
%%% files uct1x.clo.
%%%
%%% UCTHESIS.STY v2.7 is based on the standard
%%% report.sty as modified by Mittelbach and Schopf in
%%% Jan 1992. The primary differences are (1) the use
%%% of pseudo-double-spacing, except in certain special
%%% environments; and (2) the use of a 6 inch line
%%% with 4em paragraph indentation. It is only
%%% intended for single-sided printing. Double-sided
%%% printing may be possible, but you're on
%%% your own.
%%%
%%% I know of no bugs in this implementation,
%%% but would be happy to hear of any problems
%%% that arise with it.
%%%
%%% Version 2.x fixes a bug in the previous
%%% version of 20 Jun 1988. The bug was that
%%% "draft" optional mode didn't work because of
%%% problems in handling optional arguments.
%%% This file does not seem to work with earlier
%%% versions of LaTeX (pre-Jan 1992).
%%%
%%% Version 2.3 includes a single-spaced
%%% tabular* environment.
%%%
%%% Version 2.4 sets \evensidemargin correctly
%%% for two-sided style. It also adds new
%%% environments (\smalltabular and
%%% \scriptsizetabular) which produce tables
%%% with smaller fonts. The obvious methods
%%% of producing small-font tables don't work
%%% in ucthesis style.
%%%
%%% Version 2.5 adds support for the \maketitle
%%% macro.
%%%
%%% Version 2.6 adds support for complete and
%%% correct front matter. Some dead code was
%%% removed, too.
%%%
%%% Version 2.7 adds front matter support for
%%% thesis committees of more than 3 people
%%% and for a labeled signature line on the
%%% abstract page.
%%%
%%% Version 3.0 is a direct port of version 2.7
%%% to LaTeX2e. The major revisions in ucthesis.cls
%%% are converting option processing to LaTeX2e
%%% conventions. The uct1x files have been revised
%%% to use the new font selection commands.
%%%
%%% Some users have had problems with the
%%% margins ending up too small on one side.
%%% This appears to be a DVI-to-PostScript
%%% driver or printer-adjustment problem.
%%% If you have such trouble, make small adjustments
%%% to the \textwidth and \oddsidemargin
%%% settings in your document preamble.
%%%
%%% Another problem some people have had is
%%% that you can't use \pagestyle{headings}
%%% and \markboth if you use \part. The solution
%%% is to get the headerfooter style, which is
%%% nice and simple to use."
%%% }
%%% ====================================================================
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ucthesis}[1994/10/31 v3.0 University of California Thesis Class]
% ****************************************
% * OPTIONS *
% ****************************************
%
% Option values are now declared first thing. Defaults are set to
% 11 point, onesided, final (ie not draft) mode (BBF 10/31/94)
\newcommand\@ptsize{}
\newcommand\@draftmark{}
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\DeclareOption{draft}{\renewcommand\@draftmark{1}}
\DeclareOption{final}{\renewcommand\@draftmark{0}}
\ExecuteOptions{11pt,oneside,final}
% CHOOSING THE TYPE SIZE:
%
% The type size option is handled by reading a different file for each
% size, as follows, to define font size-specific commands:
% 10pt : UCT10, 11pt : UCT11, 12pt : UCT12
%
% Two-side or one-side printing.
%
% \@twosidefalse % Default is one-sided printing.
\def\ds@twoside{\@twosidetrue % Defines twoside option.
\@mparswitchtrue} % Marginpars go on outside of page.
% This is a tricky solution to a tough bootstrapping problem. The
% "draft" option requires the definition of the \ssp macro. However,
% the \ssp macro requires that the uct1?.clo file has been loaded. This
% loading is done by the \@options command which also invokes the
% \ds@draft macro. This was a cyclic dependency in the previous
% version. To break this dependency, I have made \ds@draft set a marker
% which is later tested to determine whether to actually do the draft
% mode actions.
%
% Ethan Munson (October 16, 1992)
% FMi 91/03/30: made twocolum.sty a file and twocolumn an option.
% RmS 91/10/15: moved actual reading of twocolumn.sty
% to the end of this file.
\def\ds@twocolumn{\@twocolumntrue}
% The \ProcessOptions command causes the execution of every option command
% FOO which is declared and for which the user typed the FOO option in his
% \documentclass. For every undeclared option BAR there will be a warning
% message. (BBF 10/31/94)
\ProcessOptions
\input uct1\@ptsize.clo\relax
% For some environments we switch back to single-spacing, also
% provides \dsp in case you need double-spacing where single-spacing
% is otherwise used.
\def\ssp{\def\baselinestretch{1.0}\large\normalsize}
\def\dsp{\def\baselinestretch{1.37}\large\normalsize}
% \smallssp is used to produce tabular environments in the small font.
% This is required because single-spacing requires a change in font size.
% \scriptsizessp is a still smaller version of the same thing.
\def\smallssp{\def\baselinestretch{1.0}\large\small}
\def\scriptsizessp{\def\baselinestretch{1.0}\large\scriptsize}
% draft option (this is where the draft option is actually implemented)
%
% \overfullrule = 0pt % Default is don't mark overfull hboxes.
\ifnum \@draftmark = 1
\ssp % Single-spaces and
\overfullrule 5pt % causes overfull hboxes to be marked.
\fi
% PREPARING A FOREIGN LANGUAGE VERSION:
%
% This document style is for documents prepared in the English language.
% To prepare a version for another language, various English words must
% be replaced. Many of the English words that required replacement are
% indicated below, where we give the name of the command in which the
% words appear, and which must be redefined, with the actual words
% underlined.
%
% Other English words that need replacement can be found in the macros
% supporting the title and approval pages.
%
% \tableofcontents:
\def\contentsname{Contents}
% ~~~~~~~~
%
% \listoffigures:
\def\listfigurename{List of Figures}
% ~~~~~~~~~~~~~~~
%
% \listoftables:
\def\listtablename{List of Tables}
% ~~~~~~~~~~~~~~
%
% \thebibliography:
\def\bibname{Bibliography}
% ~~~~~~~~~~~~
%
% \theindex:
\def\indexname{Index}
% ~~~~~
%
% figure environment:
\def\figurename{Figure}
% ~~~~~~
%
% table environment:
\def\tablename{Table}
% ~~~~~
%
% \chapter:
\def\chaptername{Chapter}
% ~~~~~~~
% \appendix:
\def\appendixname{Appendix}
% ~~~~~~~~
% \part
\def\partname{Part}
% ~~~~
% abstract environment:
\def\abstractname{Abstract}
% ~~~~~~~~
%
% acknowledge environment:
\def\acknowledgename{Acknowledgements}
% ~~~~~~~~~~~~~~~~
% ****************************************
% * FRONT MATTER *
% ****************************************
%
% DECLARATIONS
%
% These macros are used to declare arguments needed for the
% construction of the front matter.
% The year the degree will be officially conferred
\def\degreeyear#1{\gdef\@degreeyear{#1}}
% The full (unabbreviated) name of the degree
\def\degree#1{\gdef\@degree{#1}}
% All previous degrees: one per line in chronological order
\def\prevdegrees#1{\gdef\@prevdegrees{#1}}
% The name of your committee's chair
\def\chair#1{\gdef\@chair{#1}}
% The names of your other committe members, one per line
\def\othermembers#1{\gdef\@othermembers{#1}}
% The number of committee members, which affects both the
% number of lines and the amount of space between lines
% on the approval page.
\def\@numberofmembers{3}
\def\@approvalspace{.75in}
\def\numberofmembers#1{\gdef\@numberofmembers{#1}
\ifnum \@numberofmembers > 3
\gdef\@approvalspace{.5in}
\fi}
% The name of your degree's field (e.g. Psychology, Computer Science)
\def\field#1{\gdef\@field{#1}}
% You have to define the campus name twice because I can't figure out
% how to get the TeX \uppercase macro to work for me (EVM, 9/21/94)
% The name of your UC Campus CAPITALIZED (e.g. Berkeley, Los Angeles)
\def\campus#1{\gdef\@campus{#1}}
% \alwayssingle and \endalwayssingle
%
% These macros define an environment for front matter that is always
% single column even in a double-column document.
\def\alwayssingle{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
\else \newpage \fi}
\def\endalwayssingle{\if@restonecol\twocolumn \else \newpage \fi}
% \maketitle outputs the complete titlepage. It requires all the
% above macros except \campuscap. It is probably not correct for
% joint (e.g. UCSD/SDSU) degrees.
% Set the font that will be used in the front matter headings
\def\fmfont{\fontsize\@xiipt{14.5}\selectfont}
\def\fmsmallfont{\fontsize\@xiipt{14pt}\selectfont}
\def\maketitle{
{\ssp
\begin{alwayssingle}
\let\footnotesize\small
\let\footnoterule\relax
\thispagestyle{empty}
\setcounter{page}{1}
\null\vfil
\begin{center}
\fmfont
{\bfseries {\@title} \par}
\bigskip \medskip
by \par
\bigskip \medskip
{\@author} \par
\vspace{6ex}
{\@prevdegrees} \par
\vspace{6ex}
A dissertation submitted in partial satisfaction of the \par
\smallskip
requirements for the degree of \par
\smallskip
{\@degree} \par
\bigskip \medskip
in \par
\bigskip \medskip
{\@field}\par
\bigskip \medskip
in the \par
\bigskip \medskip
GRADUATE DIVISION \par
\smallskip
of the \par
\smallskip
UNIVERSITY of CALIFORNIA at {\expandafter\uppercase\expandafter{\@campus}}
\end{center}
{
\vspace{6ex}
\fmsmallfont
Committee in charge:
\begin{quote}
{\@chair}, Chair\newline
{\@othermembers}
\end{quote}
\begin{center}
{\@degreeyear}
\end{center}
}
\vfil\null
\end{alwayssingle}
\setcounter{footnote}{0}
}}
% APPROVALPAGE
%
% The \approvalpage macro emits a UC-approved approval page ready for
% your committee's signature. It is not an automatic part of the
% output because there's really no point in printing it until you are
% ready to get signatures. It requires the the \year, \author, and
% \campus macros have been defined. It uses lots of tricky spacing
% that is probably better handled with tabular environment code, but
% I'm too lazy to fix it. (EVM, 9/19/94)
\def\approvalpage{
\begin{alwayssingle}
\thispagestyle{empty}
\null\vfill
\begin{center}
\fmfont The dissertation of {\@author} is approved: \\
\vspace{.25in}
\vspace{\@approvalspace}
$\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small Chair%
\hspace{3.15in} Date }}\:$ \\
\vspace{\@approvalspace}
$\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
\vspace{\@approvalspace}
$\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
\vspace{\@approvalspace}
\ifnum \@numberofmembers > 3
$\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
\vspace{\@approvalspace}
\fi
\ifnum \@numberofmembers > 4
$\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
\vspace{\@approvalspace}
\fi
\ifnum \@numberofmembers > 5
$\:\overline{~~~~ \mbox{\rule{0in}{0.16in}\small ~\hspace{3.5in} Date }}\:$ \\
\vspace{\@approvalspace}
\fi
{\fmfont University of California at {\@campus}} \\
\vspace{-.25in}
\vspace{\@approvalspace}
{\fmfont \@degreeyear}
\end{center}
\vfill\null
\end{alwayssingle}
}
% COPYRIGHTPAGE
%
% While it's technically optional, you probably want a copyright page.
% This is a macro, not an environment, because it can be generated
% with the \title, \author, and \year macros.
\def\copyrightpage{
\begin{alwayssingle}
\thispagestyle{empty}
\begin{center}
{\fmfont
{\bfseries\@title}\par
\vspace{1in}
Copyright \@degreeyear\par
by\par
\@author}
\end{center}
\end{alwayssingle}}
% ABSTRACT
%
% The ABSTRACT environment allows for multi-page abstracts which,
% in accordance with UC rules, is numbered separately from the rest
% of the rest of the dissertation in Arabic. It requires definition
% of the \title, \author, \degree, \field, \campus, and \chair macros.
\def\abstract{
\begin{alwayssingle}
\pagestyle{plain}
\thispagestyle{plain}
\setcounter{page}{1}
\begin{center}
{\fmfont
{\bfseries \abstractname}\par
\vspace{.5in}
\@title\par
\vspace{.1in}
by\par
\vspace{.1in}
\@author\par
{\@degree} in \@field\par
\vspace{.1in}
University of California at {\@campus}\par
\vspace{.1in}
{\@chair}, Chair}
\vspace{.1in}
\end{center}}
\def\endabstract{\par\vfil\null\end{alwayssingle}
}
\def\abstractsignature{
\hspace*{\fill}
\begin{minipage}[t]{3.25in}
\addtolength{\baselineskip}{-.5\baselineskip}
\vspace{1.7cm}
\rule{3.2in}{.5pt}\\
\@chair\\
Dissertation Committee Chair
\end{minipage}}
% DEDICATION
%
% The dedication environment just makes sure the dedication gets its
% own page.
\newenvironment{dedication}
{\begin{alwayssingle}}
{\end{alwayssingle}}
% ACKNOWLEDGEMENTS
%
% The acknowledgements environment puts a large, bold, centered
% "Acknowledgements" label at the top of the page.
\newenvironment{acknowledgements}
{\begin{alwayssingle}
\begin{center}
{\large \bfseries \acknowledgename}
\end{center}
}
{\end{alwayssingle}}
% FRONTMATTER environment
%
% The FRONTMATTER environment makes sure that page numbering is set
% correctly (roman, lower-case, starting at 3) for the front matter
% that follows the abstract. It also resets page-numbering for
% the remainder of the dissertation (arabic, starting at 1).
\newenvironment{frontmatter}
{\setcounter{page}{3}\renewcommand{\thepage}{\roman{page}}}
{\newpage\renewcommand{\thepage}{\arabic{page}}\setcounter{page}{1}}
% ****************************************
% * LISTS *
% ****************************************
%
% ENUMERATE
% Enumeration is done with four counters: enumi, enumii, enumiii
% and enumiv, where enumN controls the numbering of the Nth level
% enumeration. The label is generated by the commands \labelenumi
% ... \labelenumiv. The expansion of \p@enumN\theenumN defines the
% output of a \ref command.
%
% 16 Mar 88 -- changed defs of \labelenum... to use \theenum...
\def\labelenumi{\theenumi.}
\def\theenumi{\arabic{enumi}}
\def\labelenumii{(\theenumii)}
\def\theenumii{\alph{enumii}}
\def\p@enumii{\theenumi}
\def\labelenumiii{\theenumiii.}
\def\theenumiii{\roman{enumiii}}
\def\p@enumiii{\theenumi(\theenumii)}
\def\labelenumiv{\theenumiv.}
\def\theenumiv{\Alph{enumiv}}
\def\p@enumiv{\p@enumiii\theenumiii}
% ITEMIZE
% Itemization is controlled by four commands: \labelitemi, \labelitemii,
% \labelitemiii, and \labelitemiv, which define the labels of the
% various itemization levels.
\def\labelitemi{$\m@th\bullet$}
\def\labelitemii{\bfseries --}
\def\labelitemiii{$\m@th\ast$}
\def\labelitemiv{$\m@th\cdot$}
% VERSE
% The verse environment is defined by making clever use of the
% list environment's parameters. The user types \\ to end a line.
% This is implemented by \let'in \\ equal \@centercr.
%
\def\verse{\par\let\\=\@centercr
\list{}{\ssp\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
\rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
\let\endverse\endlist
% QUOTATION
% Fills lines
% Indents paragraph
%
\def\quotation{\par\list{}{\ssp\listparindent 1.5em
\itemindent\listparindent
\rightmargin\leftmargin\parsep \z@ plus\p@}\item[]}
\let\endquotation=\endlist
% QUOTE -- same as quotation except no paragraph indentation,
%
\def\quote{\par\list{}{\ssp\rightmargin\leftmargin}\item[]}
\let\endquote=\endlist
% DESCRIPTION
%
% To change the formatting of the label, you must redefine
% \descriptionlabel.
\def\descriptionlabel#1{\hspace\labelsep \bfseries #1}
\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
\let\enddescription\endlist
\newdimen\descriptionmargin
\descriptionmargin=3em
% ****************************************
% * OTHER ENVIRONMENTS *
% ****************************************
%
%
% VERBATIM
%
% standard verbatim mode driver macro is modified to use
% single-spacing. There appears to be a small problem with extra
% vertical space (1 or 2 points worth) after this environment.
% Probably, this results from returning to double-spacing before
% issuing a \parskip, but I'm not enough of TeX hacker to figure out
% the source of the problem. (EVM, 9/25/94)
% 94/11/03 BBF converted \tt to \ttfamily
\def\@verbatim{\trivlist\ssp \item[]\if@minipage\else\vskip\parskip\fi
\leftskip\@totalleftmargin\rightskip\z@
\parindent\z@\parfillskip\@flushglue\parskip\z@
%%RmS 91/08/26 Added \@@par to clear possible \parshape definition
%%from a surrounding list (the verbatim guru says)
\@@par
\@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
\penalty\interlinepenalty}%
\obeylines \ttfamily \catcode``=13 \@noligs \let\do\@makeother \dospecials}
% ARRAY AND TABULAR
%
\arraycolsep 5pt % Half the space between columns in an array
% environment.
\tabcolsep 6pt % Half the space between columns in a tabular
% environment.
\arrayrulewidth .4pt % Width of rules in array and tabular environment.
\doublerulesep 2pt % Space between adjacent rules in array or tabular
% environment.
% We have to redefine array here in order to make it single-spaced.
% (Not sure if this is really necessary.)
\def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz
\let\@classiv\@arrayclassiv \let\\\@arraycr\let\@halignto\@empty\@tabarray}
% TABBING
%
\tabbingsep \labelsep % Space used by the \' command.
% (See LaTeX manual.)
% We have to redefine tabular here in order to make it single-spaced.
\def\tabular{\par\ssp\let\@halignto\@empty\@tabular}
\expandafter \def\csname tabular*\endcsname #1%
{\par\ssp\def\@halignto{to#1}\@tabular}
% \smalltabular and \smalltabular* are alternative tabular styles
% in the \small font. They are required because single-spacing implies a
% change of font to a particular size.
% EVM, 7/20/93
\def\smalltabular{\par\smallssp\let\@halignto\@empty\@tabular}
\def\endsmalltabular{\endtabular}
\expandafter \def\csname smalltabular*\endcsname #1%
{\par\smallssp\def\@halignto{to#1}\@tabular}
\expandafter \let \csname endsmalltabular*\endcsname = \endtabular
% \scriptsizetabular and \scriptsizetabular* are analogs of \smalltabular
\def\scriptsizetabular{\par\scriptsizessp\let\@halignto\@empty\@tabular}
\def\endscriptsizetabular{\endtabular}
\expandafter \def\csname scriptsizetabular*\endcsname #1%
{\par\scriptsizessp\def\@halignto{to#1}\@tabular}
\expandafter \let \csname endscriptsizetabular*\endcsname = \endtabular
% MINIPAGE
% \@minipagerestore is called upon entry to a minipage environment to
% set up things that are to be handled differently inside a minipage
% environment. In the current styles, it does nothing.
%
% \skip\@mpfootins : plays same role for footnotes in a minipage as
% \skip\footins does for ordinary footnotes
\skip\@mpfootins = \skip\footins
% FRAMEBOX
%
\fboxsep = 3pt % Space left between box and text by \fbox and
% \framebox.
\fboxrule = .4pt % Width of rules in box made by \fbox and \framebox.
% ****************************************
% * CHAPTERS AND SECTIONS *
% ****************************************
%
% DEFINE COUNTERS:
%
% \newcounter{NEWCTR}[OLDCTR] : Defines NEWCTR to be a counter, which is
% reset to zero when counter OLDCTR is
% stepped.
% Counter OLDCTR must already be defined.
% Must redefine @startsection so that we always get indentation.
\def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
\par \@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \relax\fi
\if@nobreak \everypar{}\else
\addpenalty{\@secpenalty}\addvspace{\@tempskipa}\fi \@ifstar
{\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
\newcounter {part}
\newcounter {chapter}
\newcounter {section}[chapter]
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
% For any counter CTR, \theCTR is a macro that defines the printed
% version of counter CTR. It is defined in terms of the following
% macros:
%
% \arabic{COUNTER} : The value of COUNTER printed as an arabic numeral.
% \roman{COUNTER} : Its value printed as a lower-case roman numberal.
% \Roman{COUNTER} : Its value printed as an upper-case roman numberal.
% \alph{COUNTER} : Value of COUNTER printed as a lower-case letter:
% 1 = a, 2 = b, etc.
% \Alph{COUNTER} : Value of COUNTER printed as an upper-case letter:
% 1 = A, 2 = B, etc.
%
\def\thepart {\Roman{part}}
\def\thechapter {\arabic{chapter}}
\def\thesection {\thechapter.\arabic{section}}
\def\thesubsection {\thesection.\arabic{subsection}}
\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
% \@chapapp is initially defined to be '\chaptername'. The \appendix
% command redefines it to be '\appendixname'.
%
\def\@chapapp{\chaptername}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PART %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\part{\cleardoublepage % Starts new page.
\thispagestyle{plain}% % Page style of part page is 'plain'
\if@twocolumn % IF two-column style
\onecolumn % THEN \onecolumn
\@tempswatrue % @tempswa := true
\else \@tempswafalse % ELSE @tempswa := false
\fi % FI
\hbox{}\vfil % Add fil glue to center title
%% \bgroup \centering % BEGIN centering %% Removed 19 Jan 88
\secdef\@part\@spart}
\def\@part[#1]#2{\ifnum \c@secnumdepth >-2\relax % IF secnumdepth > -2
\refstepcounter{part}% % THEN step
% part counter
\addcontentsline{toc}{part}{\thepart % add toc line
\hspace{1em}#1}\else % ELSE add
% unnumb. line
\addcontentsline{toc}{part}{#1}\fi % FI
\markboth{}{}%
{\centering % %% added 19 Jan 88
\interlinepenalty \@M %% RmS added 11 Nov 91
\ifnum \c@secnumdepth >-2\relax % IF secnumdepth > -2
\huge\bfseries \partname~\thepart % THEN Print '\partname' and
\par % number in \huge bold.
\vskip 20\p@\fi % Add space before title.
\Huge \bfseries % FI
#2\par}\@endpart} % Print Title in \Huge bold.
% Bug Fix 13 Nov 89: #1 -> #2
% \@endpart finishes the part page
%
\def\@endpart{\vfil\newpage % End page with 1fil glue.
\if@twoside % IF twoside printing
\hbox{}% % THEN Produce totally blank page
\thispagestyle{empty}%
\newpage
\fi % FI
\if@tempswa % IF @tempswa = true
\twocolumn % THEN \twocolumn
\fi} % FI
\def\@spart#1{{\centering % %% added 19 Jan 88
\interlinepenalty \@M %% RmS added 11 Nov 91
\Huge \bfseries % Print title in \Huge boldface
#1\par}\@endpart}
% ****************************************
% * TABLE OF CONTENTS, ETC. *
% ****************************************
%
% A \subsection command writes a
% \contentsline{subsection}{TITLE}{PAGE}
% command on the .toc file, where TITLE contains the contents of the
% entry and PAGE is the page number. If subsections are being numbered,
% then TITLE will be of the form
% \numberline{NUM}{HEADING}
% where NUM is the number produced by \thesubsection. Other sectioning
% commands work similarly.
%
% A \caption command in a 'figure' environment writes
% \contentsline{figure}{\numberline{NUM}{CAPTION}}{PAGE}
% on the .lof file, where NUM is the number produced by \thefigure and
% CAPTION is the figure caption. It works similarly for a 'table'
% environment.
%
% The command \contentsline{NAME} expands to \l@NAME. So, to specify
% the table of contents, we must define \l@chapter, \l@section,
% \l@subsection, ... ; to specify the list of figures, we must define
% \l@figure; and so on. Most of these can be defined with the
% \@dottedtocline command, which works as follows.
%
% \@dottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE}
% LEVEL : An entry is produced only if LEVEL < or = value of
% 'tocdepth' counter. Note, \chapter is level 0, \section
% is level 1, etc.
% INDENT : The indentation from the outer left margin of the start
% of the contents line.
% NUMWIDTH : The width of a box in which the section number is to go,
% if TITLE includes a \numberline command.
%
% This command uses the following three parameters, which are set
% with a \def (so em's can be used to make them depend upon the font).
% \@pnumwidth : The width of a box in which the page number is put.
% \@tocrmarg : The right margin for multiple line entries. One
% wants \@tocrmarg > or = \@pnumwidth
% \@dotsep : Separation between dots, in mu units. Should be
% \def'd to a number like 2 or 1.7
\def\@pnumwidth{1.55em}
\def\@tocrmarg {2.55em}
\def\@dotsep{4.5}
\setcounter{tocdepth}{2}
% TABLEOFCONTENTS
% In ucthesis style, \tableofcontents, \listoffigures, etc. are always
% set in single-column style. @restonecol
\def\tableofcontents{\@restonecolfalse
\if@twocolumn\@restonecoltrue\onecolumn\fi
\chapter*{\contentsname
\@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}%
{\ssp\@starttoc{toc}}\if@restonecol\twocolumn\fi}
\def\l@part#1#2{\addpenalty{-\@highpenalty}%
\addvspace{2.25em plus\p@}% space above part line
\begingroup
\@tempdima 3em % width of box holding part number, used by
\parindent \z@ \rightskip \@pnumwidth %% \numberline
\parfillskip -\@pnumwidth
{\large \bfseries % set line in \large boldface
\leavevmode % TeX command to enter horizontal mode.
#1\hfil \hbox to\@pnumwidth{\hss #2}}\par
\nobreak % Never break after part entry
\global\@nobreaktrue %% Added 24 May 89 as
\everypar{\global\@nobreakfalse\everypar{}}%% suggested by
%% Jerry Leichter
\endgroup}
%% First line of l@chapter changed 24 May 89, as suggested
%% by Jerry Leichter.
%%
\def\l@chapter#1#2{\addpenalty{-\@highpenalty}%
\vskip 1.0em plus\p@ % space above chapter line
\@tempdima 1.5em % width of box holding chapter number
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\bfseries % Boldface.
\leavevmode % TeX command to enter horizontal mode.
\advance\leftskip\@tempdima %% added 5 Feb 88 to conform to
\hskip -\leftskip %% 25 Jan 88 change to \numberline
#1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
\penalty\@highpenalty %% added 24 May 89, suggested by J. Leichter
\endgroup}
\def\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\def\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
\def\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
\def\l@paragraph{\@dottedtocline{4}{10em}{5em}}
\def\l@subparagraph{\@dottedtocline{5}{12em}{6em}}
% LIST OF FIGURES
%
% Single-space list of figures, add it to the table of contents.
\def\listoffigures{\@restonecolfalse
\if@twocolumn\@restonecoltrue\onecolumn\fi
\chapter*{\listfigurename\@mkboth{\uppercase{\listfigurename}}%
{\uppercase{\listfigurename}}}
\addcontentsline{toc}{chapter}{\listfigurename}
{\ssp\@starttoc{lof}}\if@restonecol
\twocolumn\fi}
\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
% LIST OF TABLES
%
\def\listoftables{\@restonecolfalse
\if@twocolumn\@restonecoltrue\onecolumn\fi
\chapter*{\listtablename\@mkboth{\uppercase{\listtablename}}%
{\uppercase{\listtablename}}}\@starttoc{lot}\if@restonecol
\twocolumn\fi}
\def\listoftables{\@restonecolfalse
\if@twocolumn\@restonecoltrue\onecolumn\fi
\chapter*{\listtablename\@mkboth{\uppercase{\listtablename}}%
{\uppercase{\listtablename}}}
\addcontentsline{toc}{chapter}{\listtablename}
{\ssp\@starttoc{lot}}\if@restonecol
\twocolumn\fi}
\let\l@table\l@figure
% ****************************************
% * BIBLIOGRAPHY *
% ****************************************
%
% The thebibliography environment executes the following commands:
%
% \def\newblock{\hskip .11em plus .33em minus .07em} --
% Defines the `closed' format, where the blocks (major units of
% information) of an entry run together.
%
% \sloppy -- Used because it's rather hard to do line breaks in
% bibliographies,
%
% \sfcode`\.=1000\relax --
% Causes a `.' (period) not toproduce an end-of-sentence space.
%% RmS 91/10/27 [ .. ] replaced by \@biblabel{ .. }
%% RmS 91/11/13: Changed counter enumi to enumiv,
%% as it says in the comment in latex.tex
%% RmS 92/01/14: Set \p@enumiv to {} and \theenumiv to \arabic{enumiv}
%% to get correct references
\def\thebibliography#1{\chapter*{\bibname\@mkboth
{\uppercase{\bibname}}{\uppercase{\bibname}}}
\addcontentsline{toc}{chapter}{\bibname}
\list{\@biblabel{\arabic{enumiv}}}{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\usecounter{enumiv}%
\let\p@enumiv\@empty
\def\theenumiv{\arabic{enumiv}}}%
\def\newblock{\hskip .11em plus.33em minus.07em}%
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=\@m}
%% 91/08/26 FMI & RmS: introduced warning instead of error
\def\endthebibliography{%
\def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
\endlist}
% \def\@biblabel#1{[#1]\hfill} % Produces the label for a \bibitem[...]
% command.
% \def\@cite#1{[#1]} % Produces the output of the \cite
% command.
% ****************************************
% * THE INDEX *
% ****************************************
%
% THE THEINDEX ENVIRONMENT
% Produces double column format, with each paragraph a separate entry.
% The user commands \item, \subitem and \subsubitem are used to
% produce the entries, and \indexspace adds an extra vertical space
% that's the right size to put above the first entry with a new letter
% of the alphabet.
\newif\if@restonecol
\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
\columnseprule \z@
\columnsep 35\p@\twocolumn[\@makeschapterhead{\indexname}]%
\@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}%
\thispagestyle{plain}\parindent\z@
\parskip\z@ plus .3\p@\relax\let\item\@idxitem}
\def\@idxitem{\par\hangindent 40\p@}
\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}
% ****************************************
% * FOOTNOTES *
% ****************************************
%
% \footnoterule is a macro to draw the rule separating the footnotes
% from the text. It should take zero vertical space, so it needs a
% negative skip to compensate for any positive space taken by the rule.
% (See PLAIN.TEX.)
\def\footnoterule{\kern-3\p@
\hrule width .4\columnwidth
\kern 2.6\p@} % The \hrule has default height of .4pt.
% \newcounter{footnote}
\@addtoreset{footnote}{chapter} % Numbers footnotes within chapters
% \@makefntext{NOTE} :
% Must produce the actual footnote, using \@thefnmark as the mark
% of the footnote and NOTE as the text. It is called when
% effectively inside a \parbox of width \columnwidth (i.e., with
% \hsize = \columnwidth).
%
% The following macro indents all lines of the footnote by 10pt,
% and indents the first line of a new paragraph by 1em. To
% change these dimensions, just substitute the desired value for
% '10pt' [in both places] or '1em'. The mark is flushright
% against the footnote.
% \long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize
% \advance\@tempdima-10pt\parshape \@ne 10pt \@tempdima}\par
% \parindent 1em\noindent
% \hbox to \z@{\hss$\m@th^{\@thefnmark}$}#1}
%
% A simpler macro is used, in which the footnote text is
% set like an ordinary text paragraph, with no indentation except
% on the first line of a paragraph, and the first line of the
% footnote. Thus, all the macro must do is set \parindent
% to the appropriate value for succeeding paragraphs and put the
% proper indentation before mark.
\long\def\@makefntext#1{\parindent 1em\noindent
\hbox to 1.8em{\hss$\m@th^{\@thefnmark}$}#1}
% \@makefnmark : A macro to generate the footnote marker that goes
% in the text. Default used.
%
% Single-space footnotes.
\long\def\@footnotetext#1{\insert\footins{\ssp\reset@font\footnotesize
\interlinepenalty\interfootnotelinepenalty
\splittopskip\footnotesep
\splitmaxdepth \dp\strutbox \floatingpenalty \@MM
\hsize\columnwidth \@parboxrestore
\edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
{\rule{\z@}{\footnotesep}\ignorespaces
#1\strut}}}
% ****************************************
% * FIGURES AND TABLES *
% ****************************************
%
% Float placement parameters. See LaTeX manual for their definition.
%
\setcounter{topnumber}{2}
\def\topfraction{.7}
\setcounter{bottomnumber}{1}
\def\bottomfraction{.3}
\setcounter{totalnumber}{3}
\def\textfraction{.2}
\def\floatpagefraction{.5}
\setcounter{dbltopnumber}{2}
\def\dbltopfraction{.7}
\def\dblfloatpagefraction{.5}
% \@makecaption{NUMBER}{TEXT} : Macro to make a figure or table caption.
% NUMBER : Figure or table number--e.g., 'Figure 3.2'
% TEXT : The caption text.
% Macro should be called inside a \parbox of right width, with
% \normalsize.
% changed 25 Jun 86 to fix according to Howard Trickey:
% instead of \unhbox\@tempboxa\par we do #1: #2\par
% 15 Nov 93: further changes to support captions BEFORE the figure
% or table. Changes suggested by Donald Arseneau, installed by Ethan
% Munson. Detailed reasons are:
% The \unhbox allows \vadjust material (\vspace) to get out;
% the \vbox to\topskip{} is for captions at the top of top-floats;
% the \ifdim is for captions above the figure or table;
% the strut is for tables below the caption.
\long\def\@makecaption#1#2{% Add space only if something is ...
\par\ifdim\prevdepth>-\p@ \vskip 10\p@\relax \fi % above the caption
\setbox\@tempboxa\hbox{\vbox to\topskip{}#1: #2\unskip\strut}%
\ifdim \wd\@tempboxa >\hsize % IF longer than one line:
{\ssp#1: #2\unskip\strut\par} % THEN set as ordinary paragraph.
\else % ELSE center.
\hbox to\hsize{\hfil\unhbox\@tempboxa\hfil}%
\fi}
% To define a float of type TYPE (e.g., TYPE = figure), the document
% style must define the following.
%
% \fps@TYPE : The default placement specifier for floats of type
% TYPE.
%
% \ftype@TYPE : The type number for floats of type TYPE. Each TYPE
% has associated a unique positive TYPE NUMBER, which
% is a power of two. E.g., figures might have type
% number 1, tables type number 2, programs type number
% 4, etc.
%
% \ext@TYPE : The file extension indicating the file on which the
% contents list for float type TYPE is stored. For
% example, \ext@figure = 'lof'.
%
% \fnum@TYPE : A macro to generate the figure number for a caption.
% For example, \fnum@TYPE == Figure \thefigure.
%
% The actual float-making environment commands--e.g., the commands
% \figure and \endfigure--are defined in terms of the macros \@float
% and \end@float, which are described below.
%
% \@float{TYPE}[PLACEMENT] : Macro to begin a float environment for a
% single-column float of type TYPE with PLACEMENT as the placement
% specifier. The default value of PLACEMENT is defined by
% \fps@TYPE. The environment is ended by \end@float. E.g.,
% \figure == \@float{figure}, \endfigure == \end@float.
% FIGURE
\newcounter{figure}[chapter]
\def\thefigure{\thechapter.\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
\def\figure{\@float{figure}}
\let\endfigure\end@float
\@namedef{figure*}{\@dblfloat{figure}}
\@namedef{endfigure*}{\end@dblfloat}
% TABLE
%
\newcounter{table}[chapter]
\def\thetable{\thechapter.\@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
\def\table{\@float{table}}
\let\endtable\end@float
\@namedef{table*}{\@dblfloat{table}}
\@namedef{endtable*}{\end@dblfloat}
% ****************************************
% * PAGE STYLES *
% ****************************************
%
% The page style 'foo' is defined by defining the command \ps@foo. This
% command should make only local definitions. There should be no stray
% spaces in the definition, since they could lead to mysterious extra
% spaces in the output.
%
% The \ps@... command defines the macros \@oddhead, \@oddfoot,
% \@evenhead, and \@evenfoot to define the running heads and
% feet---e.g., \@oddhead is the macro to produce the contents of the
% heading box for odd-numbered pages. It is called inside an \hbox of
% width \textwidth.
%
% To make headings determined by the sectioning commands, the page style
% defines the commands \chaptermark, \sectionmark, ... , where
% \chaptermark{TEXT} is called by \chapter to set a mark, and so on.
% The \...mark commands and the \...head macros are defined with the
% help of the following macros. (All the \...mark commands should be
% initialized to no-ops.)
%
% MARKING CONVENTIONS:
% LaTeX extends TeX's \mark facility by producing two kinds of marks
% a 'left' and a 'right' mark, using the following commands:
% \markboth{LEFT}{RIGHT} : Adds both marks.
% \markright{RIGHT} : Adds a 'right' mark.
% \leftmark : Used in the \@oddhead, \@oddfoot, \@evenhead or
% \@evenfoot macro, gets the current 'left' mark.
% Works like TeX's \botmark command.
% \rightmark : Used in the \@oddhead, \@oddfoot, \@evenhead or
% \@evenfoot macro, gets the current 'right' mark.
% Works like TeX's \firstmark command.
% The marking commands work reasonably well for right marks 'numbered
% within' left marks--e.g., the left mark is changed by a \chapter
% command and the right mark is changed by a \section command. However,
% it does produce somewhat anomalous results if two \bothmark's occur on
% the same page.
%
%
% Commands like \tableofcontents that should set the marks in some
% page styles use a \@mkboth command, which is \let by the pagestyle
% command (\ps@...) to \markboth for setting the heading or
% \@gobbletwo to do nothing.
\mark{{}{}} % Initializes TeX's marks
% \ps@empty defined in LATEX.TEX
% Definition of 'headings' page style
% Note the use of ##1 for parameter of \def\chaptermark inside the
% \def\ps@headings.
%
% 91/03/26 FMi: Added extra set of braces arround |\sl| in |\@oddhead|
% to support NFSS (|\sl| is a shape |\rm| a family). Also remove
% unnecessary |\hbox{}| commands.
%
% 94/11/3 BBF: Eliminated two letter font selection commands \rm and \sl
% in favor of \rmfamily and \slshape.
%
\if@twoside % If two-sided printing.
\def\ps@headings{\let\@mkboth\markboth
\def\@oddfoot{}\def\@evenfoot{}% No feet.
\def\@evenhead{\rmfamily \thepage\hfil \slshape \leftmark}% Left heading.
\def\@oddhead{{\slshape \rightmark}\hfil \rmfamily\thepage}% Right heading.
\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
\@chapapp\ \thechapter. \ \fi ##1}}{}}%
\def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
\thesection. \ \fi ##1}}}}
\else % If one-sided printing.
\def\ps@headings{\let\@mkboth\markboth
\def\@oddfoot{}\def\@evenfoot{}% No feet.
\def\@oddhead{{\slshape \rightmark}\hfil \rmfamily\thepage}% Heading.
\def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
\@chapapp\ \thechapter. \ \fi ##1}}}}
\fi
% Definition of 'myheadings' page style.
%
\def\ps@myheadings{\let\@mkboth\@gobbletwo
\def\@oddhead{{\slshape\rightmark}\hfil \rmfamily\thepage}%
\def\@oddfoot{}\def\@evenhead{\rmfamily \thepage\hfil\slshape\leftmark}%
\def\@evenfoot{}\def\chaptermark##1{}\def\sectionmark##1{}%
\def\subsectionmark##1{}}
% Definition of 'plain' page style.
%
\def\ps@plain{\let\@mkboth\markboth
\def\@oddfoot{}\def\@evenfoot{} % no feet
\def\@oddhead{\hbox{}\hfil\rmfamily\thepage} % heading (right)
\def\@evenhead{\rmfamily\thepage\hfil\hbox{}}} % heading (left)
% ****************************************
% * MISCELLANEOUS *
% ****************************************
%
% DATE
%
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
% EQUATION and EQNARRAY -- put here because it must follow \chapter
% definition
%
% \newcounter{equation}
%
\@addtoreset{equation}{chapter} % Makes \chapter reset 'equation'
% counter.
\def\theequation{\thechapter.\arabic{equation}}
% \jot = 3pt % Extra space added between lines of an eqnarray
% environment
% The macro \@eqnnum defines how equation numbers are to appear in
% equations.
%
% \def\@eqnnum{(\theequation)}
%
% ****************************************
% * INITIALIZATION *
% ****************************************
%
% Default initializations
\ps@plain % 'plain' page style
\pagenumbering{arabic} % Arabic page numbers
\if@twoside\else\raggedbottom\fi % Ragged bottom unless twoside
% option.
\if@twocolumn
\@@input twocolum.sty\relax
\else
\onecolumn % Single-column.
\fi
\endinput